/*
 * @Author: 0x9DEFA478
 * @Date: 2023-02-22 20:06:54
 * @LastEditTime: 2023-03-08 22:00:11
 * @LastEditors: 0x9DEFA478
 * @Description: 
 * QQ:2652450237
 * ============================================================================================================================================
 * 
 * 
 * 
 *                                                                                               ************      ****************************
 *                                                                                             ************      ****************************  
 *                                                                                           ************      ****************************    
 *                                                                                         ************      ****************************      
 *                                                                                       ************      ************                        
 *                                                                                     ************      ************                          
 *                                                                                   ************      ************                            
 *                                                                                 ************      ************                              
 *                                                                               ************      ************                                
 *                                                                             ************      ************                                  
 *                                                                           ************      ************                                    
 *                                                                         ************      ************                                      
 *                                                                       ************      ************                                        
 *                                                                     ************      ************                                          
 *                                                                   ************      ************                                            
 *                                                                 ************      ************                                              
 *                                                               ************      ************                                                
 *                                                             ************      ************                                                  
 *                                                           ************      ************                                                    
 *                                                         ************      ************                                                      
 *                                                       ************      ************                                                        
 *                                                     ************      ************                                                          
 *                                                   ************      ************                                                            
 *                                                 ************      ************                                                              
 *                                               ************      ************                                                                
 *                                             ************      ************                                                                  
 *                                           ************      ************                                                                    
 *                                         ************      ************                                                                      
 *                                       ************      ************                                                                        
 *                                     ************      ************                                                                          
 *                                   ************      ************                                                                            
 *                                 ************      ************                                                                              
 *                               ************      ************                                                                                
 *                             ************      ************                                                                                  
 *                           ************      ************                                                                                    
 *                         ************      ************                                                                                      
 *       ****************************      ************                                                                                        
 *     ****************************      ************                                                                                          
 *   ****************************      ************                                                                                            
 * ****************************      ************                                                                                              
 * 
 * 
 * 
 * ============================================================================================================================================
 * 
 */
#include "FunctionInfo.h"
#include "PinInfo.h"




namespace PinAbstract{




bool FunctionInfo::SetPinIndex(FunctionInfo* functionInfoInfo,int index){

  int pinSelectIndex;
  int i;
  int i_max;
  

  if(index<0){
    return false;
  }
  if(index>=(int)functionInfoInfo->pinObjects.size()){
    return false;
  }

  pinSelectIndex=functionInfoInfo->pinSelectIndex;

  if(pinSelectIndex==index){
    return true;
  }

  if(pinSelectIndex>=0){
    PinInfo* pin;
    pin=functionInfoInfo->GetPinInfoByIndex(pinSelectIndex);
    if(pin->GetFunctionByIndex(pin->FunctionIndex())->index!=functionInfoInfo->index){
      return false;
    }
    functionInfoInfo->GetPinInfoByIndex(pinSelectIndex)->SetFunctionIndex(-1);//设置原引脚的功能为无功能
  }

  functionInfoInfo->SetPinIndex(index);//设置引脚
  pinSelectIndex=index;

  index=functionInfoInfo->GetPinInfoByIndex(pinSelectIndex)->FunctionIndex();
  if(index>=0){
    functionInfoInfo->GetPinInfoByIndex(pinSelectIndex)->GetFunctionByIndex(index)->SetPinIndex(-1);//设置将要设置的引脚的功能的引脚为无引脚
  }

  //查找要设置引脚的功能对应的索引
  i_max=functionInfoInfo->GetPinInfoByIndex(pinSelectIndex)->FunctionCount();
  for(i=0;i<i_max;i++){
    if(functionInfoInfo->index==functionInfoInfo->GetPinInfoByIndex(pinSelectIndex)->GetFunctionByIndex(i)->index){
      break;
    }
  }
  if(i<i_max){
    functionInfoInfo->GetPinInfoByIndex(pinSelectIndex)->SetFunctionIndex(i);//设置新引脚的功能
  }else{
    return false;
  }

  return true;
}




FunctionInfo::FunctionInfo(int index,std::string& name){
  
  this->index=index;
  this->name=name;
  this->pinSelectIndex=-1;

}

FunctionInfo::~FunctionInfo(){
}

void FunctionInfo::SetPinIndex(int Index){
  pinSelectIndex=Index;
}

PinInfo* FunctionInfo::GetPinInfoByIndex(int index){
  if(index>=(int)pinObjects.size()){
    return nullptr;
  }
  return pinObjects[index];
}

// PinInfo& FunctionInfo::operator[](int index){
//   return pinObjects[index][0];
// }




}



